Cloud computing is a network-based computing method, where shared resources such as software, content, application, etc. may be provided to consumers as an ‘on-demand’ service. Cloud computing providers generally offer their services according to three models: Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In the PaaS model, for example, cloud providers deliver a computing platform typically including an operating system, a programming language execution environment, a database, and a web server. Application developers can develop and run their software solutions on such a platform without the cost and complexity of buying and managing the underlying hardware and software layers.
In recent times, many enterprise applications or other software applications are being migrated to cloud environments to be in line with the next generation business requirements. In this transition process many challenges are encountered while deploying software applications from non-cloud environments to heterogeneous cloud environments such as PaaS environments. One of the challenges is the lack of standards in configuring different cloud environments. Also, available deployment tools offer only limited support for heterogeneous cloud environments for deploying standalone applications onto cloud environments. Thus, users who wish to deploy software applications to heterogeneous cloud environments may be forced towards adopting a manual deployment process. The manual deployment process may be prone to error, inefficient, and success or failure of the deployment may depend on the individual skill and knowledge of the person performing deployment. Accordingly, there is a need for an improved deployment tool that can deploy software applications from non-cloud environment to heterogeneous cloud environments such as PaaS environments.
Another issue, that may not be addressed by existing deployment tools, is the assessment of source and target platform readiness before starting actual deployment. The source platform refers to the platform from where software applications are deployed to the target platform in the target cloud environment, and the target platform refers to the platform in the cloud environment where the applications are deployed. The assessment of source and target platform readiness may include assessing issues with interoperability & compatibility between the source and target platforms, enterprise application prior to deployment. Some of these interoperability and compatibility issues are dynamic in nature and may become further complex in case of simultaneous deployment of enterprise application onto heterogeneous PaaS environment. Another issue that may not be addressed by existing deployment tools is how to deal with partially compatible and/or interoperable situations and make appropriate decisions that is suitable for the current business need.
Existing deployment tools may also be unable to handle deployment related issues like ensuring connectivity, security, availability, controllability during simultaneous deployment of enterprise application in multiple heterogeneous PaaS environments. Issues involved in decision making on whether to resume/rollback/abort in the event of failure at different steps of the deployment process are significantly complex and the complexity increases drastically in case of simultaneous deployment in multiple heterogeneous PaaS environments. Existing tools may not be able to satisfactorily handle such complex issues during deployment.
Furthermore, existing deployment tools may not be sufficiently adept at handling post deployment issues such as checking the successful deployment of the enterprise application after deployment by performing sanity check and dry-run of the enterprise application. These checks and subsequent decision making may be tedious in nature due to large number of dependencies that may exist on the platform-components, configuration, and application-data. The task may become further complicated in case of simultaneous deployment on multiple heterogeneous PaaS environments.
Therefore, there exists a need for systems and methods for improved simultaneous deployment of a portfolio of software applications developed in a non-cloud environment onto multiple heterogeneous PaaS cloud environments.